// 该文件就是写路由配置的地方

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

// 导入页面 @代表src 仔细点
import Login from '@/views/login/Login.vue'
import Layout from '@/views/layout/Index.vue'
import chart from '@/views/layout/chart/index.vue'
import enterprise from '@/views/layout/enterprise/index.vue'
import question from '@/views/layout/question/index.vue'
import subject from '@/views/layout/subject/index.vue'
import user from '@/views/layout/user/index.vue'

// 导入token
import {getToken} from '@/utils/token.js'

const router = new VueRouter({
    routes:[
        {path:'/login',component:Login},
        {
            path:'/layout',
            component:Layout,
            redirect:"/layout/user",  // 重定向：从登录页面一加载到首页就直接跳转到user
            // 嵌套路由
            children:[
                {path:'chart',component:chart},
                {path:'enterprise',component:enterprise},
                {path:'question',component:question},
                {path:'subject',component:subject},
                {path:'user',component:user},
            ]
        },

        // 路由重定向
        {path:'/',redirect:'login'}
]


})

/**
 *  只要是路由跳转，无论是通过编程式导航或是手动输入地址跳转，都会进入该回调函数中
 * to:跳转到那个页面中去
 * form：跳转之前的路径
 * next: 能不能跳转，以及能跳到那里去，如果不调用next，就会卡在这里
 * 
 */

 router.beforeEach((to,form,next)=>{
     // 如果是登录页面，则直接放行
     // 如果不是登录页面，需要先进行判断，如果有权限（token）则放行，没有权限则跳回到登录页面
     if(to.path == '/login'){
         next()
     }else{
         const token = getToken()
         if(token){
             next()
         }else{
             next('/login')
         }
     }
 })
  


// ES6中默认导出
export default router

